package com.tim.openoffice;

import java.io.File;

import com.artofsolving.jodconverter.DocumentConverter;
import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;
import com.tim.framework.util.FileUtil;

public class OfficeProc extends Thread {
	/**
	 * 需要转换的Office文件.
	 */
	private File inputFile;
	/**
	 * 输出的文件.
	 */
	private File outputFile;
	/**
	 * 是否需要转为swf文件.
	 */
	private boolean toSwf = false;

	/**
	 * 将Office文件转换为指定的PDF文件.
	 * 
	 * @param inputFile
	 *            需要被转换的文件.
	 * @param outputFile
	 *            转换后的文件.
	 * @param toSwf
	 *            是否转换为swf文件.
	 */
	public OfficeProc(File inputFile, File outputFile, boolean toSwf) {
		this.inputFile = inputFile;
		this.outputFile = outputFile;
		this.toSwf = toSwf;
	}

	/**
	 * 将Office文件转换为指定的PDF文件.
	 * 
	 * @param inputFile
	 *            需要被转换的文件.
	 * @param outputFile
	 *            转换后的文件.
	 */
	public OfficeProc(File inputFile, File outputFile) {
		this.inputFile = inputFile;
		this.outputFile = outputFile;
	}

	/**
	 * 将Office转换为同名的PDF/SWF文件.
	 * 
	 * @param inputFile
	 *            需要被转换的Office文件.
	 * @param toSwf
	 *            是否转换为swf文件.
	 */
	public OfficeProc(File inputFile, boolean toSwf) {
		this.inputFile = inputFile;
		this.toSwf = toSwf;
	}

	/**
	 * 将Office转换为同名的PDF文件.
	 * 
	 * @param inputFile
	 *            需要被转换的Office文件.
	 */
	public OfficeProc(File inputFile) {
		this.inputFile = inputFile;
	}

	/**
	 * Office转PDF文件.
	 */
	public void officeToPdf() {
		DocumentConverter converter = new OpenOfficeDocumentConverter(
				OfficeServer.connection);
		if (outputFile == null) {
			outputFile = FileUtil.getFile(inputFile, ".pdf");
		}
		converter.convert(inputFile, outputFile);
	}

	/**
	 * Office转Swf文件.
	 */
	public void officeToSwf() {
		officeToPdf();
		PdfProc.convertPDF2SWF(outputFile);
	}

	/**
	 * 由于服务是线程不安全的，需要启动线程.
	 */
	public void run() {
		if (toSwf) {
			this.officeToSwf();
		} else
			this.officeToPdf();
	}

	public static void main(String[] args) {
		new OfficeProc(new File("d:/汉字（7月）.doc")).start();
	}
}
